#pragma once
#include <string>
#include "Bit.h"
using namespace std;
/**
* Adderar tv&aring; bin&auml;rstr&auml;ngar och tv&aring;komplementar om s&aring; beh&ouml;vs.
*/
class Bitstr
{
public:

	Bitstr(void)
	{
	}
	/**
	* Adderar tv&aring; bitstr&auml;ngar och ber&auml;knar summa.
	*/
	void addstr(string &astr, string &bstr, string &sumstr)
	{
		char sum, ci , cu;
		Bit b1;
		sum = ci = cu = '0';
		for (int i = astr.length()-1; i >= 0; i--)
		{
			b1.add(astr[i], bstr[i], ci, sum, cu);
			ci = cu;
			sumstr[i] = sum;
		}
	}

	/**
	* L&auml;ser in en bitsr&auml;ng, inverterar den och adderar 01 bin&auml;rt.
	*/
	void twokomp(string &str)
	{
		Bitstr bitte;
		string add1, komp;
		add1.resize(str.length(),'0');
		add1[add1.length()-1] = '1';
		komp.resize(str.length());
		for (int i = 0; i < str.length(); i++)
		{
			if (str[i] == '0')
				str[i] = '1';
			else
				str[i] = '0';
		}
		bitte.addstr(str, add1, komp);
		str = komp;
	}


	~Bitstr(void)
	{
	}
};

